package com.pachong.android.frameworkbase.utils;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

public class GsonUtils {


    /**
     * 将json字符串转成实体对象
     *
     * @param json
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T string2Object(String json, Class<T> clazz) {
        Gson gson = new Gson();
        T info = gson.fromJson(json, clazz);
        return info;
    }

    /**
     * 将json字符串转成对象list
     *
     * 输出的结果是以[]包裹的
     *
     * 使用方法：GsonUtils.string2ObjecetList(testListStr, Test[].class);
     *
     * @param jsonArrayData
     * @param <T>
     * @return
     */
    public static <T> List<T> string2ObjecetList(String jsonArrayData, Class<T[]> clazz) {
        T[] arr = new Gson().fromJson(jsonArrayData, clazz);
        return Arrays.asList(arr);
    }


    /**
     * 转成list中有map的
     *
     * // TODO 未测试
     *
     * @param gsonString
     * @return
     */
    public static <T> List<Map<String, T>> string2ListMaps(String gsonString) {
        Gson gson = new Gson();
        return gson.fromJson(gsonString, new TypeToken<List<Map<String, T>>>() {
        }.getType());
    }

    /**
     * 将对象转成json字符串
     * 包括将list对象转成json数组字符串
     *
     * @param o
     * @return
     */
    public static String object2String(Object o) {
        String json;
        Gson gson = new Gson();
        json = gson.toJson(o);
        return json;
    }



}
